<?php

/**
 * \file
 * Classe `String`.
 */

namespace pilar\Entities /* \cond */ ; /* \endcond */
{

/**
 * Membre de texte à taille non fixe.
 *
 * \since 01/08/2008
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class String extends Member {

protected function loadDefaultParams() {
 parent::loadDefaultParams();

 $this->params->define(array(
  /**
   * 
   */
  'moveMethod' => true,

  /**
   * Active le stockage du poids du fichier en base de données.
   *
   * Le poids sera déterminé à la volée si on choisit de ne pas activer
   * cette option.
   */
  'storeSize' => false,

  /**
   * Active le stockage de l'extension du fichier en base de données.
   *
   * Si l'option n'est pas activée alors l'extension est évaluée à la
   * volée à partir du fichier stocké sur le serveur.
   */
  'storeExtension' => false,

  /**
   * Active le stockage en base de données du nom du fichier source.
   */
  'storeOriginalName' => false,

  /**
   * Active le stockage en base de données du nom du fichier stocké sur
   * le serveur.
   *
   * \warning
   * Si l'option n'est pas activée il ne sera pas possible d'accéder
   * simplement au contenu du fichier sur le serveur. 
   */
  'storeName' => true,

  /**
   * Spécifie la liste des extensions autorisées pour le fichier.
   * 
   * Exemple :
   * \code
   * array('jpg', 'png', 'gif')
   * \endcode
   * 
   * Laisser à \c NULL pour accepter toutes les extensions.
   */
  'allowedExtensions' => null,

  /**
   * Spécifie la liste des types MIME autorisés pour le fichier.
   * 
   * Exemple :
   * \code
   * array('image/jpeg', 'image/png', 'image/gif')
   * \endcode
   * 
   * Laisser à \c NULL pour accepter tous les types MIMES.
   */
  'allowedMimes' => null,

  /**
   * Spécifie le poids maximal (en octets) autorisé pour le fichier.
   *
   * Laisser à \c NULL pour ne pas limiter le poids. Si c'est le cas la
   * limite sera fixée par la configuration de PHP.
   */
  'maxSize' => null,

  /**
   * Active la possibilité de désactiver le fichier.
   */
  'activable' => false,

  /**
   * Active la possibilité de supprimer le fichier.
   */
  'deletable' => false,

  /**
   * Si activé alors le fichier sera automatiquement supprimé à la
   * suppression de l'objet associé.
   */
  'autoClean' => true,

 ));
}


protected function initialize() {
 parent::initialize();

 $this->addField(
  new \pilar\Entities\Fields\Varchar(array(
   'maxLength' => $this->get('maxLength'),
   'defaultValue' => $this->get('defaultValue')
  ))
 );
}


protected function defaultFormMemberParams() {
 if($this->get('formClass') == '\\pilar\\SimpleFormMembers\\TextBox') {
  return array(
   'maxLength' => $this->get('maxLength')
  );
 }

 return parent::defaultFormMemberParams();
}



/**
 * Chemin d'accès vers le fichier stocké sur le serveur.
 *
 * \return Chemin d'accès du fichier.
 */
public function path() {
}


/**
 * Détermine si le fichier existe sur le serveur.
 *
 * \return \c TRUE si le fichier exist, \c FALSE sinon.
 */
public function exists() {
 return file_exists($this->path());
}


/**
 * Supprime le fichier du serveur.
 */
public function rm() {
 unlink($this->path());
}


/**
 * Copie le fichier vers une autre destination.
 *
 * \param $path Chemin d'accès de destination.
 */
public function cp($path) {
 copy($this->path(), $path);
}


} // Class.

} // Namespace.

?>
